package cn.lhjl.day04.note;
/*
* 继承主要解决的问题就是：共性抽取。
* 父类（超类，基类），子类（派生类）
* 继承关系中的特点：
* 1.子类可以拥有父类的内容。
* 2.子类还可以拥有自己独有的内容。
*
* 在继承关系中，子类就是一个父类。也就是说，子类可以被当做一个父类看待。
* 子类定义一格式：
* public class 子类名 extends 父类名{
*}
*
*在父子类的继承关系当中，如果成员变量重名，，则创建子类对象时，访问方式有两种
* 1.直接通过子类对象访问成员变量：等号左边是谁，就优先用谁，没有则向上找
* 2.间接通过成员方法访问成员变量：该方法属于谁，就优先用谁，没有则向上找。
*
* 区分子类方法中重名的三种变量：
*
*局部变量： 直接写成员变量名
* 本类的成员变量： this.成员变量名
* 父类的成员变量： super.成员变量名
*例如Father 和 son
*
*
* */
public class 继承 {

}
/*
* 在父子类的继承关系中，创建子类对象，访问成员方法的规则：
*   创建的对象是谁，就优先用谁，如果没有则向上找。
* 注意事项：无论是成员方法还是成员变量，如果没有都是向上找父类，绝对不会向下找父类。
*
*重写（Override）
* 概念：在继承关系当中，方法的名称一样，参数列表也一样。
*
* 重载（overload）：方法的名称一样，参数列表【不一样】
* 重写（override）：方法的名称一样，参数列表也一样。
* 方法重写的特点：创建的是子类对象，则优先用子类方法。
*
* 注意事项：
* 1.必须保证父子类之间方法名称相同，参数列表页相同。@overrid：写在方法前面，用来检测是不是有效的正确重写。
* 这个注解就算不写，只要满足要求，也是正确的方法覆盖重写。
* 2.子类方法的返回值必须【小于等于】父类方法的返回值类型。
* 3.子类方法的权限必须【大于等于】父类方法的权限修饰符。
*
*继承的设计原则
* 对于已经投入使用的类，尽量不要进行修改。推荐定义一个新的类，来重复利用其中共性内容，并且添加改动新内容。
*
*继承关系中，父子类构造方法的访问特点：
* 1.子类构造方法当中有一个隐含的“super()"调用，所以一定先调用的父类构造，后执行子类构造。
* 2.子类构造可以通过super关键字来调用父类重载构造。
* 3.super的父类构造调用，必须是构造方法的第一个语句。不能一个子类构造调用多次super构造。
* 总结：
* 1.子类必须调用父类构造方法，不写则赠送super（）；写了则用写了的super调用，super只能有一个，还必须是第一个语句。
* 2.子类中默认只有一个无参构造函数，这个无参构造函数默认调用了父类的无参构造函数，因此要想让子类有全参数构造函数，还需要
* 手写一个子类全参函数，然后在其中调用父类全参函数，并且补上子类特有成员变量的赋值。
*
* super关键字的用法有三种：
* 1.在子类的成员方法中，访问父类的成员变量。
* 2.在子类的成员方法中，访问父类的成员方法。
* 3.在子类构造方法中，访问父类构造方法。
*
* this关键字也是同样，不过是调用本类
*在使用第三种用法当中要注意：
* A.this(....)调用也必须是构造方法的第一个语句,唯一一个。
* B.super和this两种构造调用，不能同时使用。
*
* java语言继承三个特点：
* 1.java语言是单继承。
* 2.java语言可以多级继承。
* 3.java语言一个父类可以拥有多个子类。
*
*
*
* */